--
-- Host: localhost    Database: Repertorio
-- ------------------------------------------------------


--
-- Table structure for table `album`
--
DROP function IF EXISTS `Mayuscula`;
DELIMITER $$
CREATE FUNCTION `Mayuscula` (cadena TEXT)
RETURNS TEXT
BEGIN
	DECLARE pos INT DEFAULT 0; 
	DECLARE tmp TEXT 
	DEFAULT ''; 
	DECLARE result TEXT DEFAULT ''; 
	REPEAT SET pos = LOCATE(' ', cadena); 
	 IF pos = 0 THEN SET pos = CHAR_LENGTH(cadena); 
	 END IF; 
	 SET tmp = LEFT(cadena,pos); 
	 IF CHAR_LENGTH(tmp) < 4 THEN SET result = CONCAT(result, tmp); 
	 ELSE SET result = CONCAT(result, UPPER(LEFT(tmp,1)),SUBSTR(tmp,2)); 
	 END IF; 
	 SET cadena = RIGHT(cadena,CHAR_LENGTH(cadena)-pos); 
	UNTIL CHAR_LENGTH(cadena) = 0 END REPEAT; 
RETURN result; 
END$$

DELIMITER ;

CREATE TABLE `album` (
  `idAlbum` int(11) NOT NULL AUTO_INCREMENT,
  `idGrupo` int(11) DEFAULT NULL,
  `idDisquera` int(11) DEFAULT NULL,
  `Nombre` varchar(60) DEFAULT NULL,
  `Duracion` time DEFAULT NULL,
  `Lanzamiento` date DEFAULT NULL,
  `Grabacion` varchar(200) DEFAULT NULL,
  `Genero` varchar(100) DEFAULT NULL,
  `Portada` text DEFAULT NULL,
  PRIMARY KEY (`idAlbum`),
  KEY `idGrupo` (`idGrupo`),
  KEY `idDisquera` (`idDisquera`),
  CONSTRAINT `album_ibfk_1` FOREIGN KEY (`idGrupo`) REFERENCES `grupo` (`idGrupo`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `album_ibfk_2` FOREIGN KEY (`idDisquera`) REFERENCES `disquera` (`idDisquera`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

--
-- Dumping data for table `album`
--


--
-- Table structure for table `artista`
--

CREATE TABLE `artista` (
  `idArtista` int(11) NOT NULL AUTO_INCREMENT,
  `Nombre` varchar(70) DEFAULT NULL,
  `NombreArtistico` varchar(50) DEFAULT NULL,
  `Genero` char(1) DEFAULT NULL,
  `FechaNacimiento` date DEFAULT NULL,
  `FechaFinado` varchar(50) DEFAULT NULL,
  `Estatura` double DEFAULT NULL,
  `idNacionalidad` int(11) DEFAULT NULL,
  `Instrumentos` varchar(100) DEFAULT NULL,
  `TipoVoz` varchar(50) DEFAULT NULL,
  `Foto` text DEFAULT NULL,
  PRIMARY KEY (`idArtista`),
  KEY `idNacionalidad` (`idNacionalidad`),
  CONSTRAINT `artista_ibfk_1` FOREIGN KEY (`idNacionalidad`) REFERENCES `pais` (`idPais`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

--
-- Dumping data for table `artista`
--


--
-- Table structure for table `artista_grupo`
--

CREATE TABLE `artista_grupo` (
  `Codigo` int(11) NOT NULL AUTO_INCREMENT,
  `idArtista` int(11) DEFAULT NULL,
  `idGrupo` int(11) DEFAULT NULL,
  `FechaInicio` date DEFAULT NULL,
  `FechaFin` varchar(50) DEFAULT NULL,
  `idInstrumento` int(11) DEFAULT NULL,
  PRIMARY KEY (`Codigo`),
  KEY `idArtista` (`idArtista`),
  KEY `idGrupo` (`idGrupo`),
  KEY `idInstrumento` (`idInstrumento`),
  CONSTRAINT `artista_grupo_ibfk_1` FOREIGN KEY (`idArtista`) REFERENCES `artista` (`idArtista`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `artista_grupo_ibfk_2` FOREIGN KEY (`idGrupo`) REFERENCES `grupo` (`idGrupo`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `artista_grupo_ibfk_3` FOREIGN KEY (`idInstrumento`) REFERENCES `instrumento` (`idInstrumento`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

--
-- Dumping data for table `artista_grupo`
--


--
-- Table structure for table `canciones`
--

CREATE TABLE `canciones` (
  `idCancion` int(11) NOT NULL AUTO_INCREMENT,
  `Nombre` varchar(70) DEFAULT NULL,
  `Duracion` time DEFAULT NULL,
  `Publicacion` date DEFAULT NULL,
  `Genero` varchar(100) DEFAULT NULL,
  `Interpretacion` varchar(50) DEFAULT NULL,
  `idGrupo` int(11) DEFAULT NULL,
  PRIMARY KEY (`idCancion`),
  KEY `idGrupo` (`idGrupo`),
  CONSTRAINT `canciones_ibfk_1` FOREIGN KEY (`idGrupo`) REFERENCES `grupo` (`idGrupo`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

--
-- Dumping data for table `canciones`
--


--
-- Table structure for table `canciones_album`
--

CREATE TABLE `canciones_album` (
  `Codigo` int(11) NOT NULL AUTO_INCREMENT,
  `idAlbum` int(11) DEFAULT NULL,
  `idCancion` int(11) DEFAULT NULL,
  `Numero` int(11) DEFAULT NULL,
  PRIMARY KEY (`Codigo`),
  KEY `idAlbum` (`idAlbum`),
  KEY `idCancion` (`idCancion`),
  CONSTRAINT `canciones_album_ibfk_1` FOREIGN KEY (`idAlbum`) REFERENCES `album` (`idAlbum`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `canciones_album_ibfk_2` FOREIGN KEY (`idCancion`) REFERENCES `canciones` (`idCancion`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

--
-- Dumping data for table `canciones_album`
--


--
-- Table structure for table `disquera`
--

CREATE TABLE `disquera` (
  `idDisquera` int(11) NOT NULL AUTO_INCREMENT,
  `Nombre` varchar(60) DEFAULT NULL,
  `Fundacion` date DEFAULT NULL,
  `Fundador` varchar(100) DEFAULT NULL,
  `Generos` varchar(100) DEFAULT NULL,
  `idPais` int(11) DEFAULT NULL,
  `Logo` text DEFAULT NULL,
  PRIMARY KEY (`idDisquera`),
  KEY `idPais` (`idPais`),
  CONSTRAINT `disquera_ibfk_1` FOREIGN KEY (`idPais`) REFERENCES `pais` (`idPais`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

--
-- Dumping data for table `disquera`
--


--
-- Table structure for table `grupo`
--

CREATE TABLE `grupo` (
  `idGrupo` int(11) NOT NULL AUTO_INCREMENT,
  `Nombre` varchar(50) DEFAULT NULL,
  `Origen` varchar(200) DEFAULT NULL,
  `Genero` varchar(200) DEFAULT NULL,
  `Inicio` date DEFAULT NULL,
  `Fin` varchar(50) DEFAULT NULL,
  `Sellos` varchar(150) DEFAULT NULL,
  `Estado` varchar(50) DEFAULT NULL,
  `SitioWeb` varchar(50) DEFAULT NULL,
  `Idioma` varchar(50) DEFAULT NULL,
  `Logo` text DEFAULT NULL,
  PRIMARY KEY (`idGrupo`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

--
-- Dumping data for table `grupo`
--


--
-- Table structure for table `instrumento`
--

CREATE TABLE `instrumento` (
  `idInstrumento` int(11) NOT NULL AUTO_INCREMENT,
  `Nombre` varchar(70) DEFAULT NULL,
  `Descripcion` text DEFAULT NULL,
  `Foto` text DEFAULT NULL,
  PRIMARY KEY (`idInstrumento`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

--
-- Dumping data for table `instrumento`
--


--
-- Table structure for table `pais`
--

CREATE TABLE `pais` (
  `idPais` int(11) NOT NULL AUTO_INCREMENT,
  `Nombre` varchar(50) DEFAULT NULL,
  `Nacionalidad` varchar(70) DEFAULT NULL,
  `Continente` varchar(50) DEFAULT NULL,
  `Bandera` text DEFAULT NULL,
  PRIMARY KEY (`idPais`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

--
-- Dumping data for table `pais`
--


--
-- Temporary table structure for view `vista_album`
--

/*!50001 DROP VIEW IF EXISTS `vista_album`*/;
/*!50001 CREATE VIEW `vista_album` AS SELECT
 1 AS `idAlbum`,
  1 AS `idGrupo`,
  1 AS `Nombre`,
  1 AS `Grupo`,
  1 AS `Canciones`,
  1 AS `Disquera`,
  1 AS `Duracion`,
  1 AS `FechaLanzamiento`,
  1 AS `Lanzamiento`,
  1 AS `Grabacion`,
  1 AS `Genero`,
  1 AS `Portada` */;

--
-- Temporary table structure for view `vista_artista`
--

/*!50001 DROP VIEW IF EXISTS `vista_artista`*/;
/*!50001 CREATE VIEW `vista_artista` AS SELECT
 1 AS `idArtista`,
  1 AS `Nombre`,
  1 AS `NombreArtistico`,
  1 AS `Genero`,
  1 AS `FechaNacimiento`,
  1 AS `FechaFinado`,
  1 AS `Edad`,
  1 AS `Estatura`,
  1 AS `Pais`,
  1 AS `Instrumentos`,
  1 AS `TipoVoz`,
  1 AS `Foto` */;

--
-- Temporary table structure for view `vista_canciones`
--

/*!50001 DROP VIEW IF EXISTS `vista_canciones`*/;
/*!50001 CREATE VIEW `vista_canciones` AS SELECT
 1 AS `idCancion`,
  1 AS `Nombre`,
  1 AS `Duracion`,
  1 AS `Publicacion`,
  1 AS `Genero`,
  1 AS `Interpretacion`,
  1 AS `Grupo` */;

--
-- Temporary table structure for view `vista_cancionesalbum`
--

/*!50001 DROP VIEW IF EXISTS `vista_cancionesalbum`*/;
/*!50001 CREATE VIEW `vista_cancionesalbum` AS SELECT
 1 AS `Codigo`,
  1 AS `idCancion`,
  1 AS `idAlbum`,
  1 AS `Album`,
  1 AS `Numero`,
  1 AS `Nombre`,
  1 AS `Duracion`,
  1 AS `Publicacion`,
  1 AS `Genero` */;

--
-- Temporary table structure for view `vista_cancionesgrupo`
--

/*!50001 DROP VIEW IF EXISTS `vista_cancionesgrupo`*/;
/*!50001 CREATE VIEW `vista_cancionesgrupo` AS SELECT
 1 AS `idCancion`,
  1 AS `idGrupo`,
  1 AS `Grupo`,
  1 AS `Nombre`,
  1 AS `Albums`,
  1 AS `Duracion`,
  1 AS `Publicacion`,
  1 AS `Genero`,
  1 AS `Interpretacion` */;

--
-- Temporary table structure for view `vista_disquera`
--

/*!50001 DROP VIEW IF EXISTS `vista_disquera`*/;
/*!50001 CREATE VIEW `vista_disquera` AS SELECT
 1 AS `idDisquera`,
  1 AS `Nombre`,
  1 AS `Fundacion`,
  1 AS `Fundador`,
  1 AS `Generos`,
  1 AS `Pais`,
  1 AS `Logo` */;

--
-- Temporary table structure for view `vista_grupo`
--

/*!50001 DROP VIEW IF EXISTS `vista_grupo`*/;
/*!50001 CREATE VIEW `vista_grupo` AS SELECT
 1 AS `idGrupo`,
  1 AS `Nombre`,
  1 AS `Albumes`,
  1 AS `Cancion`,
  1 AS `Origen`,
  1 AS `Genero`,
  1 AS `FechaInicio`,
  1 AS `Sellos`,
  1 AS `Estado`,
  1 AS `SitioWeb`,
  1 AS `Idioma`,
  1 AS `Logo` */;

--
-- Temporary table structure for view `vista_grupointegrantes`
--

/*!50001 DROP VIEW IF EXISTS `vista_grupointegrantes`*/;
/*!50001 CREATE VIEW `vista_grupointegrantes` AS SELECT
 1 AS `Codigo`,
  1 AS `idArtista`,
  1 AS `idGrupo`,
  1 AS `NombreArtistico`,
  1 AS `Nombre`,
  1 AS `Genero`,
  1 AS `FechaNacimiento`,
  1 AS `Instrumento`,
  1 AS `Edad`,
  1 AS `Pais`,
  1 AS `TipoVoz`,
  1 AS `Foto`,
  1 AS `Periodo`,
  1 AS `Grupo` */;

--
-- Final view structure for view `vista_album`
--

/*!50001 DROP VIEW IF EXISTS `vista_album`*/;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `vista_album` AS select `album`.`idAlbum` AS `idAlbum`,`grupo`.`idGrupo` AS `idGrupo`,`album`.`Nombre` AS `Nombre`,`grupo`.`Nombre` AS `Grupo`,count(`canciones_album`.`idCancion`) AS `Canciones`,`disquera`.`Nombre` AS `Disquera`,if(date_format(`album`.`Duracion`,'%H') = '00',date_format(`album`.`Duracion`,'%i:%s'),date_format(`album`.`Duracion`,'%H:%i:%s')) AS `Duracion`,date_format(`album`.`Lanzamiento`,'%d / %M / %Y') AS `FechaLanzamiento`,`album`.`Lanzamiento` AS `Lanzamiento`,`album`.`Grabacion` AS `Grabacion`,`Mayuscula`(`album`.`Genero`) AS `Genero`,`album`.`Portada` AS `Portada` from (((`album` join `grupo` on(`album`.`idGrupo` = `grupo`.`idGrupo`)) join `disquera` on(`album`.`idDisquera` = `disquera`.`idDisquera`)) left join `canciones_album` on(`album`.`idAlbum` = `canciones_album`.`idAlbum`)) group by `album`.`idAlbum` order by `album`.`Nombre` */;

--
-- Final view structure for view `vista_artista`
--

/*!50001 DROP VIEW IF EXISTS `vista_artista`*/;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `vista_artista` AS select `artista`.`idArtista` AS `idArtista`,`artista`.`Nombre` AS `Nombre`,`artista`.`NombreArtistico` AS `NombreArtistico`,if(`artista`.`Genero` = 'H','Hombre','Mujer') AS `Genero`,date_format(`artista`.`FechaNacimiento`,'%d / %M / %Y') AS `FechaNacimiento`,date_format(`artista`.`FechaFinado`,'%d / %M / %Y') AS `FechaFinado`,case when `artista`.`FechaFinado` is null or `artista`.`FechaFinado` <= 0 then concat_ws(' ',timestampdiff(YEAR,`artista`.`FechaNacimiento`,current_timestamp()),'años') when `artista`.`FechaFinado` <= 0 then 'Fecha Invalida' when `artista`.`FechaNacimiento` <= `artista`.`FechaFinado` then concat_ws(' ',timestampdiff(YEAR,`artista`.`FechaNacimiento`,`artista`.`FechaFinado`),'años') else 'Fecha Invalida' end AS `Edad`,format(`artista`.`Estatura`,2) AS `Estatura`,concat_ws(' - ',`pais`.`Nombre`,`pais`.`Nacionalidad`) AS `Pais`,`Mayuscula`(`artista`.`Instrumentos`) AS `Instrumentos`,`artista`.`TipoVoz` AS `TipoVoz`,`artista`.`Foto` AS `Foto` from (`artista` join `pais` on(`artista`.`idNacionalidad` = `pais`.`idPais`)) order by `artista`.`Nombre` */;

--
-- Final view structure for view `vista_canciones`
--

/*!50001 DROP VIEW IF EXISTS `vista_canciones`*/;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `vista_canciones` AS select `canciones`.`idCancion` AS `idCancion`,case when `canciones`.`Interpretacion` <> 'Original' then concat(`canciones`.`Nombre`,' ( ',`canciones`.`Interpretacion`,' ) ') else `canciones`.`Nombre` end AS `Nombre`,date_format(`canciones`.`Duracion`,'%i:%s') AS `Duracion`,date_format(`canciones`.`Publicacion`,'%d / %M / %Y') AS `Publicacion`,`Mayuscula`(`canciones`.`Genero`) AS `Genero`,`canciones`.`Interpretacion` AS `Interpretacion`,`grupo`.`Nombre` AS `Grupo` from (`canciones` left join `grupo` on(`grupo`.`idGrupo` = `canciones`.`idGrupo`)) order by case when `canciones`.`Interpretacion` <> 'Original' then concat(`canciones`.`Nombre`,' ( ',`canciones`.`Interpretacion`,' ) ') else `canciones`.`Nombre` end */;

--
-- Final view structure for view `vista_cancionesalbum`
--

/*!50001 DROP VIEW IF EXISTS `vista_cancionesalbum`*/;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `vista_cancionesalbum` AS select `canciones_album`.`Codigo` AS `Codigo`,`canciones`.`idCancion` AS `idCancion`,`album`.`idAlbum` AS `idAlbum`,`album`.`Nombre` AS `Album`,`canciones_album`.`Numero` AS `Numero`,case when `canciones`.`Interpretacion` <> 'Original' then concat(`canciones`.`Nombre`,' ( ',`canciones`.`Interpretacion`,' ) ') else `canciones`.`Nombre` end AS `Nombre`,date_format(`canciones`.`Duracion`,'%i:%s') AS `Duracion`,date_format(`canciones`.`Publicacion`,'%d / %M / %Y') AS `Publicacion`,`Mayuscula`(`canciones`.`Genero`) AS `Genero` from ((`canciones` join `canciones_album` on(`canciones`.`idCancion` = `canciones_album`.`idCancion`)) join `album` on(`album`.`idAlbum` = `canciones_album`.`idAlbum`)) order by case when `canciones`.`Interpretacion` <> 'Original' then concat(`canciones`.`Nombre`,' ( ',`canciones`.`Interpretacion`,' ) ') else `canciones`.`Nombre` end */;

--
-- Final view structure for view `vista_cancionesgrupo`
--

/*!50001 DROP VIEW IF EXISTS `vista_cancionesgrupo`*/;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `vista_cancionesgrupo` AS select `canciones`.`idCancion` AS `idCancion`,`grupo`.`idGrupo` AS `idGrupo`,`grupo`.`Nombre` AS `Grupo`,case when `canciones`.`Interpretacion` <> 'Original' then concat(`canciones`.`Nombre`,' ( ',`canciones`.`Interpretacion`,' ) ') else `canciones`.`Nombre` end AS `Nombre`,group_concat(`album`.`Nombre` separator ', ') AS `Albums`,date_format(`canciones`.`Duracion`,'%i:%s') AS `Duracion`,date_format(`canciones`.`Publicacion`,'%Y') AS `Publicacion`,`canciones`.`Genero` AS `Genero`,`canciones`.`Interpretacion` AS `Interpretacion` from (((`canciones` left join `grupo` on(`grupo`.`idGrupo` = `canciones`.`idGrupo`)) left join `canciones_album` on(`canciones`.`idCancion` = `canciones_album`.`idCancion`)) left join `album` on(`album`.`idAlbum` = `canciones_album`.`idAlbum`)) group by `canciones`.`idCancion` order by case when `canciones`.`Interpretacion` <> 'Original' then concat(`canciones`.`Nombre`,' ( ',`canciones`.`Interpretacion`,' ) ') else `canciones`.`Nombre` end,`album`.`Nombre` */;

--
-- Final view structure for view `vista_disquera`
--

/*!50001 DROP VIEW IF EXISTS `vista_disquera`*/;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `vista_disquera` AS select `disquera`.`idDisquera` AS `idDisquera`,`disquera`.`Nombre` AS `Nombre`,date_format(`disquera`.`Fundacion`,'%M / %Y') AS `Fundacion`,`disquera`.`Fundador` AS `Fundador`,`disquera`.`Generos` AS `Generos`,`pais`.`Nombre` AS `Pais`,`disquera`.`Logo` AS `Logo` from (`disquera` join `pais` on(`disquera`.`idPais` = `pais`.`idPais`)) order by `disquera`.`Nombre` */;

--
-- Final view structure for view `vista_grupo`
--

/*!50001 DROP VIEW IF EXISTS `vista_grupo`*/;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `vista_grupo` AS select `g`.`idGrupo` AS `idGrupo`,`g`.`Nombre` AS `Nombre`,sum(`g`.`Albumes`) AS `Albumes`,sum(`g`.`Cancion`) AS `Cancion`,`g`.`Origen` AS `Origen`,`Mayuscula`(`g`.`Genero`) AS `Genero`,`g`.`FechaInicio` AS `FechaInicio`,`g`.`Sellos` AS `Sellos`,`g`.`Estado` AS `Estado`,`g`.`SitioWeb` AS `SitioWeb`,`g`.`Idioma` AS `Idioma`,`g`.`Logo` AS `Logo` from (select `a`.`idGrupo` AS `idGrupo`,`a`.`Nombre` AS `Nombre`,count(`c2`.`idAlbum`) AS `Albumes`,0 AS `Cancion`,`a`.`Origen` AS `Origen`,`a`.`Genero` AS `Genero`,date_format(`a`.`Inicio`,'%Y') AS `FechaInicio`,`a`.`Sellos` AS `Sellos`,`a`.`Estado` AS `Estado`,`a`.`SitioWeb` AS `SitioWeb`,`a`.`Idioma` AS `Idioma`,`a`.`Logo` AS `Logo` from (`grupo` `a` left join `album` `c2` on(`a`.`idGrupo` = `c2`.`idGrupo`)) group by `a`.`idGrupo` union all select `b`.`idGrupo` AS `idGrupo`,`b`.`Nombre` AS `Nombre`,0 AS `Albumes`,count(`c1`.`idCancion`) AS `Cancion`,`b`.`Origen` AS `Origen`,`b`.`Genero` AS `Genero`,date_format(`b`.`Inicio`,'%Y') AS `FechaInicio`,`b`.`Sellos` AS `Sellos`,`b`.`Estado` AS `Estado`,`b`.`SitioWeb` AS `SitioWeb`,`b`.`Idioma` AS `Idioma`,`b`.`Logo` AS `Logo` from (`grupo` `b` left join `canciones` `c1` on(`b`.`idGrupo` = `c1`.`idGrupo`)) group by `b`.`idGrupo`) `g` group by `g`.`idGrupo` order by `g`.`Nombre` */;

--
-- Final view structure for view `vista_grupointegrantes`
--

/*!50001 DROP VIEW IF EXISTS `vista_grupointegrantes`*/;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `vista_grupointegrantes` AS select `artista_grupo`.`Codigo` AS `Codigo`,`artista`.`idArtista` AS `idArtista`,`grupo`.`idGrupo` AS `idGrupo`,`artista`.`NombreArtistico` AS `NombreArtistico`,`artista`.`Nombre` AS `Nombre`,if(`artista`.`Genero` = 'H','Hombre','Mujer') AS `Genero`,date_format(`artista`.`FechaNacimiento`,'%d / %M / %Y') AS `FechaNacimiento`,`instrumento`.`Nombre` AS `Instrumento`,case when `artista`.`FechaFinado` is null or `artista`.`FechaFinado` <= 0 then concat_ws(' ',timestampdiff(YEAR,`artista`.`FechaNacimiento`,current_timestamp()),'años') when `artista`.`FechaFinado` <= 0 then 'Fecha Invalida' when `artista`.`FechaNacimiento` <= `artista`.`FechaFinado` then concat_ws(' ',timestampdiff(YEAR,`artista`.`FechaNacimiento`,`artista`.`FechaFinado`),'años') else 'Fecha Invalida' end AS `Edad`,concat_ws(' - ',`pais`.`Nombre`,`pais`.`Nacionalidad`) AS `Pais`,`artista`.`TipoVoz` AS `TipoVoz`,`artista`.`Foto` AS `Foto`,case when `artista_grupo`.`FechaFin` is null or `artista_grupo`.`FechaFin` <= 0 then concat_ws(' - ',year(`artista_grupo`.`FechaInicio`),'Actualidad') else concat_ws(' - ',year(`artista_grupo`.`FechaInicio`),year(`artista_grupo`.`FechaFin`)) end AS `Periodo`,`grupo`.`Nombre` AS `Grupo` from ((((`artista` join `pais` on(`artista`.`idNacionalidad` = `pais`.`idPais`)) left join `artista_grupo` on(`artista`.`idArtista` = `artista_grupo`.`idArtista`)) left join `grupo` on(`grupo`.`idGrupo` = `artista_grupo`.`idGrupo`)) join `instrumento` on(`artista_grupo`.`idInstrumento` = `instrumento`.`idInstrumento`)) group by `grupo`.`idGrupo`,`artista`.`idArtista` order by `artista`.`Nombre`,`artista_grupo`.`FechaInicio` */;



/* ----------------------------------------------------------------------------- PROCEDIMIENTOS ALMACENADOS ----------------------------------------------------------------------------- */
/* ------------------------------------------------------------------ ARTISTA GRUPO ------------------------------------------------------------------ */
DROP procedure IF EXISTS `obtener_integrantes`;
DELIMITER $$
CREATE PROCEDURE `obtener_integrantes`(IN idGrupoB INT)
BEGIN
SELECT *, GROUP_CONCAT(Instrumento separator ', ') AS Instrumento FROM Vista_GrupoIntegrantes WHERE idGrupo = idGrupoB GROUP BY idGrupo, idArtista;
END$$

DELIMITER ;

/* ------------------------------------------------------------------- ALBUM GRUPO ------------------------------------------------------------------- */
DROP procedure IF EXISTS `obtener_album`;
DELIMITER $$
CREATE PROCEDURE `obtener_album`(IN idGrupoB INT)
BEGIN
SELECT idAlbum, idGrupo, Nombre, Grabacion, Canciones, Duracion, FechaLanzamiento, Disquera, Portada FROM Vista_Album WHERE idGrupo = idGrupoB ORDER BY Lanzamiento;
END$$

DELIMITER ;

/* ----------------------------------------------------------------- CANCIONES ALBUM ----------------------------------------------------------------- */
DROP procedure IF EXISTS `obtener_cancionesAlbum`;
DELIMITER $$
CREATE PROCEDURE `obtener_cancionesAlbum`(IN idAlbumA INT)
BEGIN
SELECT 
	Codigo,   
	Numero, 
    GROUP_CONCAT(Nombre separator ' / ') AS Nombre,
    DATE_FORMAT(sec_to_time(SUM(time_to_sec(Duracion))), "%H:%i")  AS Duracion,
    Publicacion
FROM Vista_CancionesAlbum WHERE idAlbum = idAlbumA GROUP BY Numero ORDER BY Numero;
END$$

DELIMITER ;

/* ----------------------------------------------------------------- CANCIONES GRUPO ----------------------------------------------------------------- */
DROP procedure IF EXISTS `obtener_canciones`;
DELIMITER $$
CREATE PROCEDURE `obtener_canciones`(IN idGrupoB INT)
BEGIN
SELECT idCancion, Nombre, Albums, Duracion, Publicacion FROM Vista_CancionesGrupo WHERE idGrupo = idGrupoB;
END$$

DELIMITER ;